package com.ruyuan.twelve.juc._15.promise;

import java.util.concurrent.Callable;
import java.util.concurrent.FutureTask;

/**
 * promisor类
 * 第一步：定义任务
 * 第二步：执行
 * 第三部：直接返回promise
 */
public class Promisor {

    public static FutureTask<Object> create(long startTime) {
        //定义任务
        FutureTask<Object> futureTask = new FutureTask<>(new Callable<Object>() {
            @Override
            public Object call() throws Exception {
                System.out.println("开始烧水，当前用时"+(System.currentTimeMillis()-startTime)+"ms");
                BoilWater boilWater = new BoilWater();
                Thread.sleep(10000);
                boilWater.setStatus(true);
                return boilWater;
            }
        });

        //执行
        new Thread(futureTask).start();
        //FutureTask是JDK提供的promise，可以获取结果
        return futureTask;
    }
}
